home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / THINK C Digest / 1993 / 93-03 < prev    next >
Text File  |  1995-12-31  |  83KB  |  2,359 lines

  1. 
  2. Path: ucivax!gateway
  3. From: jenlan@vision.arc.nasa.gov (Jennifer Lanham)
  4. Subject: Re:  GetNewWindow function call in Think C 5.04
  5. Message-ID: <9303011725.AA10507@vision.arc.nasa.gov>
  6. Newsgroups: fa.think-c
  7. Lines: 10
  8. Date: 1 Mar 93 17:26:46 GMT
  9.  
  10. Sylvia -
  11.  
  12. I'm sure some one has pointed this out, but GetNewWindow takes
  13. the following ( int, Ptr, WindowPtr).  With tighter type checking,
  14. you get your error.  Type casting is in order.
  15.  
  16. Jen
  17. jenlan@gauss.arc.nasa.gov
  18.  
  19. ( Penn cse '88 ) how's it going in the Moore School ? :-)
  20. 
  21. 
  22. Path: ucivax!gateway
  23. From: jenlan@vision.arc.nasa.gov (Jennifer Lanham)
  24. Subject: RE: GetNewWindow...NO MORE ANSWERS PLEASE!
  25. Message-ID: <9303011725.AA10510@vision.arc.nasa.gov>
  26. Newsgroups: fa.think-c
  27. Lines: 1
  28. Date: 1 Mar 93 17:26:52 GMT
  29.  
  30. ooops sorry just replied!
  31. 
  32. 
  33. Path: ucivax!gateway
  34. From: dnebing@andy.bgsu.edu
  35. Subject: Re: "Invalid Redeclaration" Errors Which Don't Exist
  36. Message-ID: <9303011856.AA10412@andy.bgsu.edu>
  37. Newsgroups: fa.think-c
  38. Lines: 23
  39. Date: 1 Mar 93 18:56:46 GMT
  40.  
  41. >
  42. >Well, you can always add a #include "project.prfx" statement to your
  43. >prefix, and click on the "copy >>" button to make it the defualt for
  44. >all new projects. Although you'll have to customize it if you put more
  45. >than one project in a single folder...
  46. >
  47. >    -phil
  48. >----
  49. >   Phil Shapiro                                   Software Engineer
  50. >   Language Products Group                     Symantec Corporation
  51. >           Internet: phils@cs.brandeis.edu
  52. >              "relatively inexperienced"
  53.  
  54.   This is one problem that I never quite understood.  When I would make
  55. the changes in the preferences and try to copy them to all new projects, it
  56. would only work until I quit TC.  The next time that I would want to start
  57. up TC, I would have to change all of the preferences again.
  58.  
  59.   Since TC does not use a preferences file, is there any way of modifying
  60. TC so that my preferences are the default?
  61.  
  62. Dave
  63.  
  64. 
  65. 
  66. Path: ucivax!gateway
  67. From: russne@catseq.catlin.edu (Russ Nelson)
  68. Subject: trapping keyUp
  69. Message-ID: <Pine.2.27-experimental.9302170812.A14769@catseq.catlin.edu>
  70. Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
  71. Mime-Version: 1.0
  72. Newsgroups: fa.think-c
  73. Reply-To: Russ Nelson <russne@catseq.catlin.edu>
  74. Lines: 8
  75. Date: 1 Mar 93 19:11:45 GMT
  76.  
  77. I have a WaitNextEvent loop I'm using in my game, but it isn't trapping
  78. keyUp's.  I am using everyEvent as my mask, too, and it still doesn't work.
  79. Any ideas?
  80.  
  81. Russ Nelson   *  internet:  russne@catseq.catlin.edu  *   bitnet:  nelson@catlin
  82. ->This came directly from a computer and is not to be doubted or disbelieved.<-
  83.  
  84.  
  85. 
  86. 
  87. Path: ucivax!gateway
  88. From: winter@ai.rl.af.mil (Jim Wintermyre)
  89. Subject: Detecting Notifications
  90. Message-ID: <9303012036.AA01619@AI.RL.AF.MIL>
  91. Newsgroups: fa.think-c
  92. Lines: 13
  93. Date: 1 Mar 93 20:37:40 GMT
  94.  
  95. Hi.  Does anyone know of a way to detect from within an application when ANOTHER
  96. application posts a notification?  I can't patch NMInstall because I'm an app
  97. and I wouldn't be able to detect some other app calling it.  I thought of
  98. looking at the application menu for an item with a diamond by it, or checking
  99. the front window to see if it's an alert.  But what about other notifications,
  100. like just a flashing icon?  Darkness seems to be able to do it.  Any ideas?
  101.  
  102. Thanks,
  103.  
  104. Jim
  105.  
  106. winter@ai.rl.af.mil
  107. wintermyrej@lonex.rl.af.mil
  108. 
  109. 
  110. Path: ucivax!gateway
  111. From: Chuck_Shavit.KSRHQ@ksr.com (Chuck Shavit)
  112. Subject: RE: "Invalid Redeclaration" Errors Which Don't Exist
  113. Message-ID: <9303012133.AA03534@kaos.ksr.com>
  114. Newsgroups: fa.think-c
  115. Lines: 14
  116. Date: 1 Mar 93 21:35:06 GMT
  117.  
  118.  >   This is one problem that I never quite understood.  When I would make
  119.  > the changes in the preferences and try to copy them to all new projects, it
  120.  > would only work until I quit TC.  The next time that I would want to start
  121.  > up TC, I would have to change all of the preferences again.
  122.  
  123. I am not sure about TC, but it took me a while before I understood why this
  124. thing happened with some other  applications, namely that Preferences are
  125. not saved.  At least in some cases, it was AutoDoubler: if the preferences
  126. are saved as a resource of the application and the application is compressed,
  127. it sometimes fails with no warning.
  128.  
  129. Is your TC AutoDoubled?
  130.  
  131. Chuck Shavit
  132. 
  133. 
  134. Path: ucivax!gateway
  135. From: Chris_Page@qmgated.mv.us.adobe.com (Chris Page)
  136. Subject: RE>trapping keyUp
  137. Message-ID: <9303012257.AA28042@qmgw.mv.us.adobe.com>
  138. Newsgroups: fa.think-c
  139. Lines: 33
  140. Date: 1 Mar 93 22:57:05 GMT
  141.  
  142.         Reply to:   RE>trapping keyUp
  143. KeyUp events are masked out by the System event mask, since they aren't
  144. generally useful. You can enable them during your application by changing
  145. the value of the System event mask to include keyUp events. You should
  146. probably use a bit-or operation to set the keyUp bit instead of setting
  147. all the bits of the mask arbitrarily. Additionally, you must be sure to
  148. save and restore the original value of the mask when your application
  149. quits.
  150.  
  151. The low memory global is SysEvtMask (at 0x0144). You may read this to
  152. save the old value, but to change the value, you must call SetEventMask()
  153. with the new mask value.
  154.  
  155. Chris Page
  156. Adobe Systems, Inc.
  157. cpage@mv.us.adobe.com
  158.  
  159. Disclaimer: opinions expressed are not necessarily those of my employer.
  160.  
  161. --------------------------------------
  162. Date: 3/1/93 2:23 PM
  163. To: Chris Page
  164. From: russne@catseq.catlin.edu
  165. I have a WaitNextEvent loop I'm using in my game, but it isn't trapping
  166. keyUp's.  I am using everyEvent as my mask, too, and it still doesn't work.
  167. Any ideas?
  168.  
  169. Russ Nelson   *  internet:  russne@catseq.catlin.edu  *   bitnet:
  170. nelson@catlin->This came directly from a computer and is not to be doubted or
  171. disbelieved.<-
  172.  
  173.  
  174.  
  175. 
  176. 
  177. Path: ucivax!gateway
  178. From: tsang@isi.com ("Kam C. Tsang")
  179. Subject: trapping keyUp
  180.    From: Russ Nelson <russne@catseq.catlin.edu>
  181.    Mime-Version: 1.0
  182.    Date: 1 Mar 93 19:11:45 GMT
  183. Message-ID: <9303012321.AA02491@hardrock>
  184. In-Reply-To: Russ Nelson's message of 1 Mar 93 19:11:45 GMT
  185. Newsgroups: fa.think-c
  186. Lines: 8
  187. Date: 1 Mar 93 23:20:57 GMT
  188.  
  189.    I have a WaitNextEvent loop I'm using in my game, but it isn't trapping
  190.    keyUp's.  I am using everyEvent as my mask, too, and it still doesn't work.
  191.    Any ideas?
  192.  
  193. Use GetKeys, may be on null events.
  194.  
  195. -kam
  196.  tsang@isi.com (tsang@pure.com after Mar 5)
  197. 
  198. 
  199. Path: ucivax!gateway
  200. From: kirk_crawford@qmail2.aero.org (Kirk Crawford)
  201. Subject: Think C 4 and System 7
  202. Message-ID: <199303012334.AA12150@aerospace.aero.org>
  203. Posted-Date: 1 Mar 93 15:31:53 U
  204. Newsgroups: fa.think-c
  205. Lines: 10
  206. Date: 1 Mar 93 23:34:59 GMT
  207.  
  208. Subject:  Think C 4 and System 7
  209. What are the incompatibilities between System 7 and Think C 4?
  210.  
  211. My officemate is having problems with the Think C 4 debugger and System7.
  212.  
  213. (it locks up)
  214. -Kirk Crawford
  215.  
  216.  
  217.  
  218. 
  219. 
  220. Path: ucivax!gateway
  221. From: franklin@eecs.ucdavis.edu (Paul Franklin)
  222. Subject: Re: RE>trapping keyUp
  223. Message-ID: <9303020240.AA27568@luffa.eecs.ucdavis.edu>
  224. In-Reply-To: Your message of "01 Mar 93 22:57:05 PST."
  225.              <9303012257.AA28042@qmgw.mv.us.adobe.com>
  226. Newsgroups: fa.think-c
  227. Reply-To: franklin@ece.ucdavis.edu
  228. Lines: 41
  229. Date: 2 Mar 93 02:40:39 GMT
  230.  
  231. What follows is a fairly good description of what happens under
  232. UniFinder (pre-MultiFinder).  However, with Multifinder, the process
  233. has changed slightly.
  234.  
  235. >        Reply to:   RE>trapping keyUp
  236. >KeyUp events are masked out by the System event mask, since they aren't
  237. >generally useful. You can enable them during your application by changing
  238. >the value of the System event mask to include keyUp events. You should
  239. >probably use a bit-or operation to set the keyUp bit instead of setting
  240. >all the bits of the mask arbitrarily. Additionally, you must be sure to
  241. >save and restore the original value of the mask when your application
  242. >quits.
  243. >
  244. >The low memory global is SysEvtMask (at 0x0144). You may read this to
  245. >save the old value, but to change the value, you must call SetEventMask()
  246. >with the new mask value.
  247.  
  248. Actually, with MultiFinder, event masks seem like they are on their
  249. way out, along with keyUp events (in my opinion).  Why?  If another
  250. application is getting background task time when an event arrives,
  251. that application's mask is used.  (Last I heard, at least.)  Apple's
  252. documentation says that every application should be using
  253. 'everyEvent-keyUp' as a mask when they're in the background, so you
  254. will at least miss some of the keyUp events, depending on how much
  255. time you give to background tasks (which Finder will be glad to gobble
  256. up, I'm sure).
  257.  
  258. Note that this also means you can get events which are not in your
  259. event mask, if they are placed in the event queue while your
  260. application is the foreground application and another application is
  261. getting background task time.  It might even be possible for this to
  262. happen as you're swapping foreground applications.
  263.  
  264. Technically, what happens is SysEvtMask is swapped with every
  265. application.  This sounds reasonable.  However, it gets swapped at
  266. both major and minor context switches, resulting in what I describe in
  267. the previous paragraph.  (Minor context switches are done to give
  268. background tasks time.  Major switches make a new application the
  269. foreground app.)
  270.  
  271. --Paul Franklin
  272. 
  273. 
  274. Path: ucivax!gateway
  275. From: umdenbo0@ccu.umanitoba.ca ("David A. Denboer")
  276. Subject: GetKeys Problems
  277. Message-ID: <9303020411.AA26397@ccu.UManitoba.CA>
  278. X-Mailer: ELM [version 2.3 PL11]
  279. Newsgroups: fa.think-c
  280. Lines: 18
  281. Date: 2 Mar 93 04:11:43 GMT
  282.  
  283. I am using GetKeys in my application, and it calls fine, but the value
  284. that it returns is incomprehensible.
  285. I call it with:
  286.     GetKeys(&myKeys);
  287. When I poll the individual elements of the array, I get some weird responses.
  288. I looked it up in Inside Mac, and the variable that is returned is a
  289. Packed Array[1..127] of Boolean;
  290. One of the results that I get back is 22347776, and that is consistently
  291. returned for myKeys[4]
  292. What am I doing wrong?  All I want ot do is see if the user has pressed a key
  293. while I am in the background...
  294.  
  295. Any help would be greatly appreciated.
  296. --
  297. David A. denBoer                    * Musi Computer Products
  298. umdenbo0@next01.cc.umanitoba.ca   (NeXT Mail welcome)    * 9 Abington Rd
  299. Manitoba Macintosh Developers Assn            * Winnipeg, MB
  300. mac-develop-request@ccu.umanitoba.ca             * Canada, R2J 3S7
  301. 
  302. 
  303. Path: ucivax!gateway
  304. From: idowell@bbn.com
  305. Subject: Novice Popup Menu Question
  306. Message-ID: <9303021941.aa26692@q2.ics.uci.edu>
  307. Newsgroups: fa.think-c
  308. Lines: 16
  309. Date: 3 Mar 93 03:41:19 GMT
  310.  
  311. I seem to be unable to "install" a popup menu I'm
  312. creating on the fly.  The PopupPane call to MakePopupMenu
  313. can't find the menuID and looks (unsuccessfully) for a
  314. menu resource with that ID.
  315.  
  316.     theMenu = NewMenu(gNextMenuNumber,"\pLength");
  317.     AppendMenu ( theMenu, "\pfeet");
  318.     AppendMenu ( theMenu, "\pinches");
  319.     gBartender->AddMenu(gNextMenuNumber,FALSE,0);
  320.     UnitsPopup->MakePopupMenu(gNextMenuNumber,TRUE,FALSE);
  321.  
  322. Can anyone help me out?
  323.  
  324. Thanks in advance,
  325. Ian Dowell
  326. idowell@bbn.com
  327. 
  328. 
  329. Path: ucivax!gateway
  330. From: C511899@mizzou1.missouri.edu (Andrew McAllister)
  331. Subject: Help! Need pow(x,y) in a code resource (Q)
  332. Message-ID: <9303021946.aa27037@q2.ics.uci.edu>
  333. Newsgroups: fa.think-c
  334. Lines: 42
  335. Date: 3 Mar 93 03:46:36 GMT
  336.  
  337. Hi all,
  338. I'm trying to write a code resource, and need the standard C function:
  339.     pow(x,y)
  340.  
  341. But alas math stuff is not available in Ansi-A4 which I need to write the
  342. code resource. :(
  343.  
  344. Here's what I've done so far:
  345.    1)Create a new library called "Ansi-a4 /w math". It has the same
  346.        files as Ansi-a4 and the math.c file also. Library compiles OK.
  347.    2)Remove ANSI lib in project and replace with new lib.
  348.        Romoved objects and project recompiles just fine.
  349.  
  350.    The results: project compiles and loads fine, but bombs promptly after
  351.        exiting any function that has a math call in it. Errors include:
  352.         illegal instruction, odd address, etc. Please note that the math call
  353.         does not cause the bomb, only exiting a function that uses math calls.
  354.    Other settings: Generate 68020 and 68881 instructions are on.
  355. Here's a list of the math functions that I need: sqrt(), log(), and pow().
  356.  
  357. Sample code:
  358. #include <math.h>
  359. #include <other stuff>
  360.  
  361. void my_bombing_function(double x)
  362.     { double stupid_variable;
  363.     stupid_variable = pow(x,5);
  364.     }
  365. main ()
  366.     {
  367.     RememberA0();
  368.     SetUpA4();
  369.     Allocate_stuff();
  370.     my_bombing_function();    /* program bombs when returning from here */
  371.     RestoreA4();
  372.     }
  373.  
  374. If I can't get this to work, then I might as well give up on my master's
  375. thesis, quit school, and start learning how to flip burgers.:(
  376.  
  377. Thanx in advance
  378. Andrew McAllister     c511899@mizzou1.missouri.edu
  379. 
  380. 
  381. Path: ucivax!gateway
  382. From: C511899@mizzou1.missouri.edu (Andrew McAllister)
  383. Subject: pow(x,y) in code resources: SOLUTION
  384. Message-ID: <9303051710.aa28850@q2.ics.uci.edu>
  385. Newsgroups: fa.think-c
  386. Lines: 41
  387. Date: 6 Mar 93 01:10:54 GMT
  388.  
  389. My sincerest thanks to all who responded to my pleas for help.
  390. The problem: How do I use math functions in code resources using the A4
  391.       features inherent in Think C.
  392.  
  393. The solution: The most general solution to making any library A4 compatible
  394. and available in code resources is to open the library and set the project
  395. type to anything BUT application and bring the project up-to-date. Think C
  396. will recompile the lib so that it uses the A4 register instead of the A5.
  397. Pretty simple. HOWEVER, some pieces of code will not recompile as a code
  398. resources because variables are initialized in their declarations.
  399.  
  400. An example: To set the standard ANSI lib to be A4 and code resource
  401. compatible do this:
  402.    Make a copy of the lib.
  403.    Open the ANSI lib.
  404.    Choose options from the Edit menu and set the file prefix to
  405.         #define _NOCONSOLE_
  406.    Remove these files from the project: command.c, console.c,
  407.         locale.c, time.c  (it is necessary to remove these files because
  408.         each one contains a structure that is initialized as it is declared.
  409.         Think C won't allow aggregate initialization in code resources.
  410.    Set the project type to CODE and fill in the appropriate blanks. (It
  411.         doesn't matter what code number or resource type you pick, just
  412.         fill them with something.)
  413.    Chose bring-up-to-date from the Project menu.
  414.    Poof! You now have an A4 and code resource compatible library that
  415.         contains almost all of the ANSI functions. Obviously you can't do
  416.         console I/O or use the time functions, but hey it could be worse.
  417. Another tip: Make sure the compiler settings you use in your project are
  418. the same as the ones you used to bring your new lib up-to-date. In other
  419. words, if 68020 and 68881 are set in your project, it would really help
  420. if they were set in your lib too.
  421.  
  422. If anyone has any questions about this process, please e-mail me and I
  423. will be happy to help in any way I can.
  424. Thanks again to the following people who helped me in my hours of need:
  425.    Bob Boonstra, Jan G. Zegers, Bob Beason, Jeremy Ahouse,
  426.    Julian Vrieslander, Josh Cherry, Eric Slosser, and Ramin Firoozye.
  427.  
  428. Andrew McAllister c511899@mizzou1.missouri.edu
  429. "Put funny closing signature here."
  430. 
  431. 
  432. Path: ucivax!gateway
  433. From: 91287%TAYLORU@uicvm.uic.edu (Mark Goddard)
  434. Subject: Writing Comm Toolbox Tools
  435. Message-ID: <01GVHJQWXV4W8Y5IZ4@TAYLORU>
  436. Newsgroups: fa.think-c
  437. X-VMS-To: IN%"think-c@ics.uci.edu"
  438. Lines: 12
  439. Date: 6 Mar 93 16:59:40 GMT
  440. X-Envelope-to: think-c@ics.uci.edu
  441.  
  442. Hi!
  443.  
  444. I am in the process of trying to write a file transfer tool for a class
  445. project.  I have Inside the Comm Toolbox and the Developer CD, but neither has
  446. any clear sample code which describes how everything works.  I would really
  447. appreciate it if anyone could point me to an ftp site which might have some
  448. sample code.
  449.  
  450. Thanks a lot!
  451.  
  452. Mark Goddard
  453. 91287@tayloru.bitnet
  454. 
  455. 
  456. Path: ucivax!gateway
  457. From: choupt@world.std.com (Charles E Houpt)
  458. Subject: Using ANSI malloc-ed memory and the Mac Memory Mgr
  459. Message-ID: <199303080410.AA14721@world.std.com>
  460. Newsgroups: fa.think-c
  461. Lines: 26
  462. Date: 8 Mar 93 04:10:40 GMT
  463.  
  464. I'm working on a project to port a large unix program (a machine
  465. translation system) to the Mac.
  466.  
  467. The problem I have is that Think's ANSI library provides a
  468. implementation of malloc() and free() that iteracts poorly with the Mac
  469. Memory Manager.  Here is the problem:
  470.  
  471. The free() call frees memory for future use by malloc(), but not for
  472. NewHandle()/NewPtr().
  473.  
  474. Once a chunk of memory has been malloc-ed it is never returned to the Mac
  475. heap.  This can easily cause a situation where you have megabytes of
  476. malloc-able memory, but zero memory for NewHandle().
  477.  
  478. Think's manual admits the above problem and warns agains mixing mallocs
  479. and Mac Memory Mgr calls.
  480.  
  481. One obvious solution I've tried is to replace malloc() with NewPtr(), but
  482. this is very slow and can cause alot of fragmentation.
  483.  
  484. I am sure some of you have run into this problem before, what solution did
  485. you find?
  486.  
  487. I'll mail a summary of responses.
  488.  
  489. Thanks  - Chuck (choupt@world.std.com)
  490. 
  491. 
  492. Path: ucivax!gateway
  493. From: pchang@cs.stanford.edu (The Weasel)
  494. Subject: Re: Using ANSI malloc-ed memory and the Mac Memory Mgr
  495. Message-ID: <9303080503.AA19206@Xenon.Stanford.EDU>
  496. In-Reply-To: <199303080410.AA14721@world.std.com>; from "Charles E Houpt" at Mar 8, 93 4:10 am
  497. X-Mailer: ELM [version 2.3 PL11]
  498. Newsgroups: fa.think-c
  499. Lines: 17
  500. Date: 8 Mar 93 05:03:15 GMT
  501.  
  502. Hi There,
  503.  
  504. If I remember correctly Time Endres at ice re-wrote some of the malloc
  505. stuff so that it interacted nicely with the mac, or at least returned
  506. stuff back to free store. The ftp site used to be: ftp.msen.com, but
  507. this may have changed since I lasty checked.
  508.  
  509. Anyway, you might want to check this out, and if anyone else knows
  510. of something else, or if I have made an error here please feel
  511. free to crrect me, as if you wouldn't already :-)
  512.  
  513. Peter
  514. --
  515. Peter Chang                     |  "Just waking up in the morning means
  516. E-Mail: weasel@cs.stanford.edu  |   a lot to me."
  517. Snail Mail: PO Box 9603         |                    Keith Richards
  518.             Stanford, CA  94309 |
  519. 
  520. 
  521. Path: ucivax!gateway
  522. From: jimlynch@netcom.com (Jim Lynch)
  523. Subject: Re: Using ANSI malloc-ed memory and the Mac Memory Mgr
  524. Message-ID: <9303080956.AA07444@netcom2.netcom.com>
  525. Newsgroups: fa.think-c
  526. Lines: 6
  527. Date: 8 Mar 93 09:57:15 GMT
  528.  
  529. Then use only one or the other. Simple, huh? You can also malloc enough for a
  530. heap zone... No, I like my original idea better: One or the other but not both.
  531.  
  532. Maybe another happy medium would be to define malloc in terms of NewPtr
  533. and free in terms of DisposePtr... I still like my original idea because
  534. handles are better/safer than pointers.
  535. 
  536. 
  537. Path: ucivax!gateway
  538. From: dnebing@andy.bgsu.edu ("Mr. Neb")
  539. Subject: Re: Using ANSI malloc-ed memory and the Mac Memory Mgr
  540. Message-ID: <9303081705.AA13050@andy.bgsu.edu>
  541. Newsgroups: fa.think-c
  542. Lines: 4
  543. Date: 8 Mar 93 17:05:58 GMT
  544.  
  545. The ice-malloc stuff that you refered to can also be found int
  546. the last release of Harvest C (the release with the source.)
  547.  
  548. dnebing
  549. 
  550. 
  551. Path: ucivax!gateway
  552. From: k.c.quick@open.ac.uk (Kevin Quick)
  553. Subject: ShutDown Manager
  554. Via: uk.ac.open; Mon, 8 Mar 1993 21:10:50 +0000
  555. X-Sender: kc_quick@sunflower
  556. Message-ID: <9303081248.AA24396@sunflower.open.ac.uk>
  557. X-Mailer: Eudora 1.3
  558. Newsgroups: fa.think-c
  559. Lines: 16
  560. Date: 9 Mar 93 00:00:32 GMT
  561.  
  562. I'm porting a basic program from an old machine to the mac. Being new to
  563. mac programming I've run into a problem that I hope you can solve.
  564.  
  565. Because the program is being used by computer illiterates I want the
  566. program to shutdown instead of returning to the finder.
  567.  
  568. I have installed shutdown.h but cannot get any shutdown calls to work.
  569.  
  570. An example of how to call the manager to shut down would be appreciated.
  571.  
  572. Kevin Quick
  573. Computer Support Engineer
  574. The Open University
  575.  
  576. Mail by Eudora 1.3
  577.  
  578. 
  579. 
  580. Path: ucivax!gateway
  581. From: George_Tempel@monmouth-etdl1.army.mil (George Tempel)
  582. Subject: variable arg lists
  583. Message-ID: <01GVLVRXKB768WVZQN@MONMOUTH-etdl1.Army.MIL>
  584. Content-transfer-encoding: 7BIT
  585. Priority: Urgent
  586. Newsgroups: fa.think-c
  587. Lines: 15
  588. Date: 9 Mar 93 19:30:28 GMT
  589.  
  590.                       variable arg lists
  591. Does anyone have experience using variable length
  592. argument lists? In particular, is there an easy way
  593. to determine the number of args in the variable
  594. length thang? Functions like printf() and scanf()
  595. (and their siblings) can easily count the number
  596. of percent signs in the format string to find
  597. the number of arguments...but how else can it
  598. be done?
  599.  
  600. george tempel
  601. tempel@monmouth-etdl1.army.mil
  602.  
  603.  
  604.  
  605. 
  606. 
  607. Path: ucivax!gateway
  608. From: morris@wais.com (Harry Morris)
  609. Subject: variable arg lists
  610. Message-ID: <9303101639.AA07822@wais.wais.com>
  611. In-Reply-To: George Tempel's message of 9 Mar 93 19:30:28 GMT <01GVLVRXKB768WVZQN@MONMOUTH-etdl1.Army.MIL>
  612. Newsgroups: fa.think-c
  613. Lines: 23
  614. Date: 10 Mar 93 16:36:04 GMT
  615.  
  616.    From: George Tempel <George_Tempel@monmouth-etdl1.army.mil>
  617.    Date: 9 Mar 93 19:30:28 GMT
  618.  
  619.              variable arg lists
  620.    Does anyone have experience using variable length
  621.    argument lists? In particular, is there an easy way
  622.    to determine the number of args in the variable
  623.    length thang? Functions like printf() and scanf()
  624.    (and their siblings) can easily count the number
  625.    of percent signs in the format string to find
  626.    the number of arguments...but how else can it
  627.    be done?
  628.  
  629.    george tempel
  630.    tempel@monmouth-etdl1.army.mil
  631.  
  632. as far as I know you can't.  You need some way for the called routine to
  633. determin the number and type of arguments.  Either give the # args as the
  634. first parameter, or use a special value in the last arg which marks it as
  635. the end.
  636.  
  637. Also remember that C promotes arguments as they are passed in, so floats
  638. become doubles, and chars become ints.
  639. 
  640. 
  641. Path: ucivax!gateway
  642. From: sandvik@newton.apple.com (Kent Sandvik)
  643. Subject: Re: variable arg lists
  644. Message-ID: <9303101926.AA05173@newton.apple.com>
  645. Newsgroups: fa.think-c
  646. Lines: 66
  647. Date: 10 Mar 93 19:51:42 GMT
  648.  
  649. At 16:36 3/10/93 +0000, Harry Morris wrote:
  650. >   From: George Tempel <George_Tempel@monmouth-etdl1.army.mil>
  651. >   Date: 9 Mar 93 19:30:28 GMT
  652. >
  653. >                         variable arg lists
  654. >   Does anyone have experience using variable length
  655. >   argument lists? In particular, is there an easy way
  656. >   to determine the number of args in the variable
  657. >   length thang? Functions like printf() and scanf()
  658. >   (and their siblings) can easily count the number
  659. >   of percent signs in the format string to find
  660. >   the number of arguments...but how else can it
  661. >   be done?
  662. >
  663. >   george tempel
  664. >   tempel@monmouth-etdl1.army.mil
  665. >
  666. >as far as I know you can't.  You need some way for the called routine to
  667. >determin the number and type of arguments.  Either give the # args as the
  668. >first parameter, or use a special value in the last arg which marks it as
  669. >the end.
  670.  
  671. Here's an example of va_args use, taken from the DTSC++Library kit on the
  672. Developer CD (March-93). I think we are talking about va_args...
  673.  
  674. //      vxdebugstr that also prints out by default __FILE__ and __LINE__
  675. //      information
  676. void vxdebugstr(char* format,...)
  677. {
  678.         char buff[255];
  679.         char final[255];
  680.  
  681.         va_list arglist;
  682.         va_start(arglist,format);
  683.         vsprintf(buff,format,arglist); // *** parse your params here ***
  684.         va_end(arglist);
  685.  
  686. #ifdef FILELINEINFO
  687.         strcat(final,fileNameArray);
  688. #ifdef TESTLEVEL2
  689.         strcat(final, " ;");
  690.     // MacsBug does not like embedded ;s
  691. #endif
  692.         strcat(final, lineNumberArray);
  693. #endif
  694.  
  695.         strcat(final, buff);
  696.         c2p(final);
  697.  
  698.         // Print out the message, based on the testing level
  699. #ifdef TESTLEVEL1
  700.         AlertUser((Str255)final);
  701. #endif
  702. #ifdef TESTLEVEL2
  703.         ::SysBreakStr((Str255)final);
  704.     // for high level debuggers
  705. #endif
  706. #ifdef TESTLEVEL3
  707.         ::DebugStr((Str255)final);
  708. #endif
  709. }
  710.  
  711.  
  712. Kent Sandvik
  713. PIE Developer Technical Support
  714.  
  715. 
  716. 
  717. Path: ucivax!gateway
  718. From: slosser@apple.com (eric slosser)
  719. Subject: Re: ShutDown Manager
  720. X-Sender: slosser@apple.com (Unverified)
  721. Message-ID: <9303102005.AA02904@apple.com>
  722. Newsgroups: fa.think-c
  723. Lines: 52
  724. Date: 10 Mar 93 20:07:56 GMT
  725.  
  726. >I'm porting a basic program from an old machine to the mac.
  727. >
  728. >Because the program is being used by computer illiterates I want the
  729. >program to shutdown instead of returning to the finder.
  730. >
  731. >I have installed shutdown.h but cannot get any shutdown calls to work.
  732. >
  733. >An example of how to call the manager to shut down would be appreciated.
  734. >
  735. Example---------
  736.  
  737. #include        <Shutdown.h>
  738.  
  739. main()
  740.         {
  741.         InitGraf(&qd.thePort);
  742.         ShutDwnPower();
  743.         }
  744. Process---------
  745.  
  746. My first step was to refer to Think Reference 2.0, which told me that
  747. ShutDwnPower() was only used by the System and Finder.  So I guessed the
  748. call made some assumptions about the environment of the caller.
  749.  
  750. By trying "main() { ShutDwnPower(); }", I found myself in Macsbug, with a
  751. bus error, in the middle of some system code that was trying to play with
  752. the current port.
  753.  
  754. By calling InitGraf, I got the ShutDwnPower to work.
  755.  
  756. Noise----------
  757.  
  758. The more you define "cannot get xxxx to work", the higher the quality of
  759. the responses.
  760.  
  761. Shutting down the machine is fairly disruptive, and goes against the
  762. general Mac philosophy that the user owns the machine, the programs are not
  763. supposed to wrest control of it from the user.  (Witness the UI-guidelines
  764. on the topic of changing the screen depth).
  765.  
  766. In the case of novice users, and a public machine, strong measures are
  767. occasionally appropriate.  But couldn't you just put up a dialog, saying
  768. "Welcome! Click the button to run Kevin's friendly app".  If you put a
  769. secret backdoor (like an invisible spot in the corner) that would allow the
  770. literate to get back to the Finder, you'd solve your problem and never have
  771. to say,
  772.  
  773.    "I'd show you the program I wrote, but it shuts down the machine".
  774.  
  775.  
  776. Eric Slosser     Blue Meanie    slosser@apple.com
  777.  
  778. 
  779. 
  780. Path: ucivax!gateway
  781. From: laurence.kirchmeier@umich.edu (Laurie Kirchmeier)
  782. Subject: Re: variable arg lists
  783. X-Sender: laurie@helen.oit.itd.umich.edu
  784. Message-ID: <9303102010.AA06189@oit.itd.umich.edu>
  785. Newsgroups: fa.think-c
  786. Lines: 37
  787. Date: 10 Mar 93 20:12:38 GMT
  788.  
  789. >   From: George Tempel <George_Tempel@monmouth-etdl1.army.mil>
  790. >   Date: 9 Mar 93 19:30:28 GMT
  791. >
  792. >                         variable arg lists
  793. >   Does anyone have experience using variable length
  794. >   argument lists? In particular, is there an easy way
  795. >   to determine the number of args in the variable
  796. >   length thang? Functions like printf() and scanf()
  797. >   (and their siblings) can easily count the number
  798. >   of percent signs in the format string to find
  799. >   the number of arguments...but how else can it
  800. >   be done?
  801. >
  802. >   george tempel
  803. >   tempel@monmouth-etdl1.army.mil
  804. >
  805. >as far as I know you can't.  You need some way for the called routine to
  806. >determin the number and type of arguments.  Either give the # args as the
  807. >first parameter, or use a special value in the last arg which marks it as
  808. >the end.
  809. >
  810. >Also remember that C promotes arguments as they are passed in, so floats
  811. >become doubles, and chars become ints.
  812.  
  813. Indeed it can be done...
  814.   See The Think C Standard Libraries Reference pages 318-320.  You can use
  815. va_start, va_arg & va_end macros.  There is an example as well as a
  816. description.
  817. I'm pretty sure this is part of the ANSI C standard - there is also a
  818. description in Kernighan & Ritchie (2nd Edition) Section 7.3
  819.  
  820. Laurie Kirchmeier
  821. Office of Instructional Technology
  822. University of Michigan
  823.  
  824. ps. RTFM
  825.  
  826. 
  827. 
  828. Path: ucivax!gateway
  829. From: ringrose@ai.mit.edu (Robert Ringrose)
  830. Subject: variable arg lists
  831. Message-ID: <9303102235.AA09944@fibula>
  832. In-Reply-To: Laurie Kirchmeier's message of 10 Mar 93 20:12:38 GMT <9303102010.AA06189@oit.itd.umich.edu>
  833. Newsgroups: fa.think-c
  834. Lines: 17
  835. Date: 10 Mar 93 22:36:18 GMT
  836.  
  837.  
  838. Please READ his question before posting hasty replies.
  839.  
  840. >   From: George Tempel <George_Tempel@monmouth-etdl1.army.mil>
  841. >   Date: 9 Mar 93 19:30:28 GMT
  842. >
  843. >   length thang? Functions like printf() and scanf()
  844. >   (and their siblings) can easily count the number
  845. >   of percent signs in the format string to find
  846. >   the number of arguments...but how else can it
  847. >   be done?
  848.  
  849. Many people have pointed him at routines which are well-documented and allow
  850. him to count the number of % signs in the format string.  What George is
  851. apparently looking for is a way to discover the number of arguments passed to a
  852. variable-argument-length function.  To my knowledge, this is not possible in C.
  853. The arguments themselves must give their length.
  854. 
  855. 
  856. Path: ucivax!gateway
  857. From: P30WCC9%NIU.BITNET@uicvm.uic.edu (WES COVALT)
  858. Subject: GetPoint()
  859. Message-ID: <9303111404.aa11905@q2.ics.uci.edu>
  860. Newsgroups: fa.think-c
  861. Lines: 29
  862. Date: 11 Mar 93 22:04:24 GMT
  863.  
  864. Hello,
  865.     I want to use the following function to "get" a point on the
  866. screen.  It changes the cursor to the cross and waits for a
  867. mouseDown event.  I'm having problems with mouse clicks on other
  868. windows, the trashcan, or applications - I get the point, but
  869. that window (MultiFinder, application etc.) becomes activated
  870. and I don't want it to be.  I just want the point on the screen.
  871. I've Flushed the event queue but that isn't enough.   What else
  872. do I need to do?
  873.                     Thanks.
  874.  
  875. Point GetPoint()
  876. {
  877.         EventRecord        theNewEvent;
  878.         Cursor                theCross;
  879.         CursHandle        theCrossH;
  880.  
  881.         theCrossH = GetCursor( crossCursor );
  882.         theCross = **theCrossH;
  883.         SetCursor( &theCross );
  884.  
  885.         while (!GetNextEvent ( ( mDownMask | activMask | app4Mask),
  886.                                &theNewEvent))
  887.         {
  888.              ...I show the coordinates...
  889.         }
  890.         FlushEvents( everyEvent, 0 );
  891.         return( theNewEvent.where );
  892. }
  893. 
  894. 
  895. Path: ucivax!gateway
  896. From: C511899@mizzou1.missouri.edu (Andrew McAllister)
  897. Subject: Initializing a handle.(Q)
  898. Message-ID: <9303151240.aa24324@q2.ics.uci.edu>
  899. Newsgroups: fa.think-c
  900. Lines: 19
  901. Date: 15 Mar 93 20:40:28 GMT
  902.  
  903. A trivial question:
  904. When I declare a handle is it really a pointer to another pointer, or is
  905. it just a pointer?
  906. It seems to me that a handle is really just a pointer that functions like
  907. NewHandle and GetCTable cause to point to another pointer.
  908. Does any of this make sense?
  909. if a declaration like Handle myhandle;
  910. causes a resulting structure like this to be allocated
  911.      ------------------            ------------------       -----------
  912.     |myhandle         |----------->|32Bit Pointer   |------>|NULL     |
  913.      ------------------            ------------------       -----------
  914. What happens to the second 32Bit pointer when the handle is assigned
  915. by NewHandle or GetCTable? Wouldn't this result in a lot of 32 bit holes
  916. in memory?
  917. If I set a handle to NULL shortly after I declare it and before I use it,
  918. then I'm not creating any 32 bit holes right?
  919. Andy McAllister
  920. c511899@mizzou1.missouri.edu
  921. "Insert funny quote or signature here."
  922. 
  923. 
  924. Path: ucivax!gateway
  925. From: dnebing@andy.bgsu.edu ("Mr. Neb")
  926. Subject: Re: Initializing a handle.(Q)
  927. Message-ID: <9303160441.AA10076@andy.bgsu.edu>
  928. Newsgroups: fa.think-c
  929. Lines: 28
  930. Date: 16 Mar 93 04:42:07 GMT
  931.  
  932. A handle is basically a pointer to a pointer to a data structure, but it is
  933. also a little bit more.
  934.  
  935. When you app starts up, there is some room set aside for an area of Master
  936. pointers.  A handle is actually a pointer to one of these master pointers.
  937. When an os trap "moves memory", your handle will point to the same master
  938. pointer, but the address in the master pointer could be completly different.
  939.  
  940. Moving memory can sound kind of vague, but what it means is that the Memory
  941. Manager will shuffle the chunks of memory that you have allocated around
  942. in order to keep your area of memory from getting too fragmented.
  943.  
  944. So a handle is a way for your app to keep track of where your data really is
  945. and still allow the Memory Manager to do it's trick.  As a point of reference,
  946. NewPtr will return a pointer to a block of memory that the memory manager can
  947. not move.  This potentially can fragment your memory causing your app to die
  948. in the water.
  949.  
  950. When you define a handle (Handle myHandle;), this just sets aside the 32 bits
  951. needed to hold the address of a master pointer, but it does not assign itself
  952. a master pointer and a block of memory.  You have to do that with a call to
  953. NewHandle (myHandle=NewHandle(size);).  Now you can have a size of zero, but
  954. your handle will still point somewhere.  So if you do not call NewHandle,
  955. you will not be creating "holes" in your memory.
  956.  
  957. Hope this helps, let me know if you have further questions.
  958.  
  959. dnebing
  960. 
  961. 
  962. Path: ucivax!gateway
  963. From: jimlynch@netcom.com (Jim Lynch)
  964. Subject: Re:  Initializing a handle.(Q)
  965. Message-ID: <9303160651.AA24819@netcom3.netcom.com>
  966. Newsgroups: fa.think-c
  967. Lines: 88
  968. Date: 16 Mar 93 06:52:07 GMT
  969.  
  970. >>>>
  971. When I declare a handle is it really a pointer to another pointer, or is
  972. it just a pointer?
  973. <<<<
  974.  
  975. A handle is a pointer to a (master) pointer to the allocated memory.
  976.  
  977. >>>>>
  978. It seems to me that a handle is really just a pointer that functions like
  979. NewHandle and GetCTable cause to point to another pointer.
  980. <<<<<
  981.  
  982. Not quite, but close. A handle is four bytes of memory allocated and type-
  983. checked by the compiler. Its function is to (eventually) point to a master
  984. pointer which points to your block.
  985.  
  986. Here are some rules for safe pointer usage:
  987.  
  988. 1) you must allocate the storage for the pointer itself
  989. 2) you must allocate the space that the pointer will point to
  990. 3) you must set the pointer to the address of the storage and
  991. 4) you must initialize the storage to some meaningful value(s).
  992.  
  993. Granted, there will be times when it's not possible to do all of the above
  994. in one statement (e.g., "int *p = (int *) malloc(sizeof(int)) ; *p = 0;" OOPS!
  995. that's two statements... well, you get the idea: the initialization happens
  996. _right_ after you declare the pointer), but following these rules in some form
  997. will guarantee safe pointer usage.
  998.  
  999. >>>>>
  1000. if a declaration like Handle myhandle;
  1001. causes a resulting structure like this to be allocated
  1002.      ------------------            ------------------       -----------
  1003.     |myhandle         |----------->|32Bit Pointer   |------>|NULL     |
  1004.      ------------------            ------------------       -----------
  1005. <<<<<
  1006.  
  1007. I have to stop you right there. The declaration "Handle myHandle" _only_
  1008. allocates space for the handle. i.e., you have:
  1009.  
  1010.      ------------------
  1011.     |myHandle         |
  1012.      ------------------
  1013.  
  1014. so far. If you now say "myHandle = NewHandle(numOfBytes) ;", then you either
  1015. have:
  1016.  
  1017.      ------------------       -----------------     ------------
  1018.      |myHandle        |------>| master pointer|---->| the block|
  1019.      ------------------       -----------------     ------------
  1020.  
  1021. or else you have:
  1022.  
  1023.      ------------------
  1024.     |myHandle (=NULL) |
  1025.      ------------------
  1026.  
  1027. which means that NewHandle could not allocate the block (and you should not try
  1028. to use the (non-existant) space.)
  1029.  
  1030. >>>>>
  1031. If I set a handle to NULL shortly after I declare it and before I use it,
  1032. then I'm not creating any 32 bit holes right?
  1033. <<<<<
  1034.  
  1035. If you have
  1036.  
  1037.      ------------------       -----------------     ------------
  1038.      |myHandle        |------>| master pointer|---->| the block|
  1039.      ------------------       -----------------     ------------
  1040.  
  1041. and you then set myHandle to the null pointer (which happens to be zero),
  1042. you not only lose contact with the master pointer, but also to the block.
  1043.  
  1044. If you want to get rid of the block, call DisposeHandle(myHandle) and then
  1045. you'll basically have
  1046.  
  1047.      ------------------       -------------------------
  1048.      |myHandle        |------>| (null) master pointer |
  1049.      ------------------       -------------------------
  1050.  
  1051. and you _should_ now set myHandle to NULL, at which point you'll have:
  1052.  
  1053.      ------------------
  1054.     |myHandle (=NULL) |
  1055.      ------------------
  1056.  
  1057. Hope this helps...
  1058. 
  1059. 
  1060. Path: ucivax!gateway
  1061. From: gurgle@netcom.com (Pete Gontier)
  1062. Subject: Re:  Initializing a handle.(Q)
  1063. Message-ID: <9303160820.AA15640@netcom2.netcom.com>
  1064. X-Mailer: ELM [version 2.3 PL11]
  1065. Newsgroups: fa.think-c
  1066. Lines: 14
  1067. Date: 16 Mar 93 08:20:25 GMT
  1068.  
  1069. > If you want to get rid of the block, call DisposeHandle(myHandle) and then
  1070. > you'll basically have
  1071. >
  1072. >      ------------------       -------------------------
  1073. >      |myHandle        |------>| (null) master pointer |
  1074. >      ------------------       -------------------------
  1075.  
  1076. Whoa there, little dogie! This is not the case on my Quadra 800
  1077. running 7.1. The master pointer doesn't change, but I imagine
  1078. the housekeeping bytes associated with it do. I figured this
  1079. had to be bogus because nil is used to signify purged handles.
  1080.  
  1081. --
  1082.  Pete Gontier // EC Technology // gurgle@netcom.com
  1083. 
  1084. 
  1085. Path: ucivax!gateway
  1086. From: jimlynch@netcom.com (Jim Lynch)
  1087. Subject: More handle stuff...
  1088. Message-ID: <9303160914.AA18727@netcom2.netcom.com>
  1089. Newsgroups: fa.think-c
  1090. Lines: 15
  1091. Date: 16 Mar 93 09:14:37 GMT
  1092.  
  1093. Thanks to Pete Gontier who says that this:
  1094.  
  1095. > If you want to get rid of the block, call DisposeHandle(myHandle) and then
  1096. > you'll basically have
  1097. >
  1098. >      ------------------       -------------------------
  1099. >      |myHandle        |------>| (null) master pointer |
  1100. >      ------------------       -------------------------
  1101.  
  1102. is not totally correct. According to Pete, the master pointer doesn't actually
  1103. change, although the flag bits that are attributes of it do.
  1104.  
  1105. My main point was to show that myHandle still points to the master pointer and
  1106. to be on the safest side, you should put a zero in myHandle so it no longer
  1107. points at the master pointer.
  1108. 
  1109. 
  1110. Path: ucivax!gateway
  1111. From: Chris_Page@qmgated.mv.us.adobe.com (Chris Page)
  1112. Subject: RE>Re-  Initializing a hand
  1113. Message-ID: <9303162215.AA15768@qmgw.mv.us.adobe.com>
  1114. Newsgroups: fa.think-c
  1115. Lines: 43
  1116. Date: 16 Mar 93 22:15:10 GMT
  1117.  
  1118.         Reply to:   RE>Re:  Initializing a handle.
  1119. > The master pointer doesn't change, but I imagine the housekeeping
  1120. > bytes associated with it do.
  1121.  
  1122. In fact, master pointers that are free point to each other in a linked
  1123. list. The heap zone header contains a pointer to the first free master
  1124. pointer (struct Zone.hFstFree). The last master pointer in the list
  1125. points to a memory location which contains null. In this way, a free
  1126. master pointer can be found quickly, without scanning all master
  1127. pointers.
  1128.  
  1129. Therefore, when DisposeHandle() or DisposePtr() (New-Age spelling :-)
  1130. is called, the value of the freed master pointer changes to point to
  1131. the next master pointer in the list.
  1132.  
  1133. Chris Page
  1134. Adobe Systems, Inc.
  1135. cpage@mv.us.adobe.com
  1136.  
  1137. Disclaimer: opinions expressed are my own and not necessarily those of
  1138. my employer.
  1139.  
  1140. --------------------------------------
  1141. Date: 3/16/93 12:54 AM
  1142. To: Chris Page
  1143. From: gurgle@netcom.com
  1144. > If you want to get rid of the block, call DisposeHandle(myHandle) and then
  1145. > you'll basically have
  1146. >
  1147. >      ------------------       -------------------------
  1148. >      |myHandle        |------>| (null) master pointer |
  1149. >      ------------------       -------------------------
  1150.  
  1151. Whoa there, little dogie! This is not the case on my Quadra 800
  1152. running 7.1. The master pointer doesn't change, but I imagine
  1153. the housekeeping bytes associated with it do. I figured this
  1154. had to be bogus because nil is used to signify purged handles.
  1155.  
  1156. --
  1157.  Pete Gontier // EC Technology // gurgle@netcom.com
  1158.  
  1159.  
  1160.  
  1161. 
  1162. 
  1163. Path: ucivax!gateway
  1164. From: C511899@mizzou1.missouri.edu (Andrew McAllister)
  1165. Subject: Palette Animation (Q)
  1166. Message-ID: <9303171634.aa22592@q2.ics.uci.edu>
  1167. Newsgroups: fa.think-c
  1168. Lines: 39
  1169. Date: 18 Mar 93 00:34:39 GMT
  1170.  
  1171. Me again. (I really do own all of the IM and Think Reference, but sometimes
  1172. it's just not in the books).
  1173.  
  1174. Here's the situation: I have two windows. One is a non-Modal dialog the
  1175. other is a color window with a pixelmap copied into it (using CopyBits).
  1176. The color window has a palette set up as a grayscale all entries(0-255)
  1177. are set for pmAnimated. The dialog has no palette or color table that
  1178. I can tell.
  1179.    The dialog has slider controls that I use to animate the palette of
  1180. the color window. Animation is realatively quick and resposive.
  1181. BUT none of the white (255) pixels in the color window will animate. :(
  1182. I checked the palette of the color window, sure enough, entry 255 is
  1183. set correctly given the position of the controls, but even if entry 255
  1184. is set to 0x0000 for all rgb colors, all pixels with value 255 are still
  1185. white.
  1186.    So I'm thinking, It must be that I have a black and white dialog as the
  1187. current grafport (it has to be current so that I can draw the sliders
  1188. correctly). My reasoning extends to: White won't animate because the
  1189. current grafport (the dialog) needs white and black to be drawn correctly.
  1190. I'm assuming that the palette manager fulfull's the dialog's color first
  1191. by reserving black and white, then allows all other values 1-254 to animate
  1192. correctly.
  1193.    This reasoning works EXCEPT that black animates correctly. Thats right,
  1194. all of the pixels in the picture with 0 values take on the appropriate gray
  1195. value. And the black pixels in the dialog stay black.
  1196.    Oh sure I can set entry 0 in the monitor's color table so that white
  1197. animates, but that's not the nice way to do things, I mean what is the
  1198. palette manager for if you have to make direct modifications to the
  1199. monitor's color tables? When you animate the monitor color table directly,
  1200. you could accidentally animate yourself so much that you can't see the
  1201. controls anymore. (Don't laugh I've done this one to many times)
  1202.    I tried creating a color dialog and then animating it's palette hoping
  1203. that it would affect the other window, but when I tried to create a dctb
  1204. resource, ResEdit ate my harddrive in a horrific crash. (Oh yes I back up
  1205. everything once a day so I was saved).
  1206.   Any ideas?
  1207. Thanx in advance (again).
  1208. andy mcallister        c511899@mizzou1.missouri.edu
  1209. "Doom dispare and agony for me."
  1210. 
  1211. 
  1212. Path: ucivax!gateway
  1213. From: C511899@mizzou1.missouri.edu (Andrew McAllister)
  1214. Subject: Palette Animation (Q2) The saga continues
  1215. Message-ID: <9303172159.aa17420@q2.ics.uci.edu>
  1216. Newsgroups: fa.think-c
  1217. Lines: 17
  1218. Date: 18 Mar 93 05:59:54 GMT
  1219.  
  1220. IN my ealier post (the one right before this one) I mentioned I was having
  1221. trouble animating a window using the Palette Manager. A few more details:
  1222.     I'm using a IICX with Sys7.01tunned Think-C v5.02 and 8 megs of ram.
  1223. An additional weirdness:
  1224.     When I run my prog with the debugger in Think-C and open,move the
  1225. slider controls, then close the dialog (GetNewDialog, DisposDialog), the
  1226. controls work (except for the white pixels which still don't animate).
  1227. I've set my prog to repeatedly open the dialog, and for some reason, the first
  1228. time I call it, the white pixels don't animate, the second: the black
  1229. pixels don't animate, and the third: all pixels animate correctly. BUT this
  1230. sequence only occurres if I move the sliders and animate each time I get
  1231. a new dialog. This is completely reproducable!
  1232.     Even weirder: If I compile and run the program as an application then
  1233. nothing animates at all. The sliders don't work.
  1234.     Now I'm really confused and think I will play Solitare until morning.
  1235. Andy (wish I had a dime for everytime I crashed my machine) McAllister
  1236. c511899@mizzou1.missouri.edu
  1237. 
  1238. 
  1239. Path: ucivax!gateway
  1240. From: idowell@bbn.com
  1241. Subject: System Error 41 on ExitToShell()
  1242. Message-ID: <9303190815.aa07054@q2.ics.uci.edu>
  1243. Newsgroups: fa.think-c
  1244. Lines: 10
  1245. Date: 19 Mar 93 16:15:29 GMT
  1246.  
  1247. Can anyone tell me why I might get a System Error 41
  1248. (can't load the Finder error) upon calling ExitToShell()?
  1249. FinderName is equal to "Finder".  Falling through main()
  1250. is not an option.  Doesn't crash in the debugger but the
  1251. application always crashes.  Think C 5.0.4, System 7.0.1.
  1252.  
  1253.  
  1254. Thanks,
  1255. Ian Dowell
  1256. idowell@bbn.com
  1257. 
  1258. 
  1259. Path: ucivax!gateway
  1260. From: idowell@bbn.com
  1261. Subject: more System Error 41 on ExitToShell()
  1262. Message-ID: <9303201041.aa16349@q2.ics.uci.edu>
  1263. Newsgroups: fa.think-c
  1264. Lines: 14
  1265. Date: 20 Mar 93 18:41:20 GMT
  1266.  
  1267. >When I invoke ExitToShell() I get a System Error 41
  1268. >(Couldn't load Finder) error.  This runs fine under
  1269. >the debugger.  FinderName is equal to "Finder".
  1270. Falling through main() is not an option. The code works
  1271. fine under System 6 (I'm running System 7.01).  It also
  1272. works fine if I quit the Finder while running my app.
  1273. Killing the Finder from my app before ETS() would be
  1274. kludgy.  Anyone have any other suggestions?  What happens
  1275. if ETS/Launch tries to launch the Finder and it's already
  1276. running?
  1277.  
  1278. Thanks,
  1279. Ian Dowell
  1280. idowell@bbn.com
  1281. 
  1282. 
  1283. Path: ucivax!gateway
  1284. From: huff@mcclb0.med.nyu.edu ("Edward J. Huff")
  1285. Subject: RE:  Initializing a handle.(Q)
  1286. Message-ID: <01GW3K1AP0NM001KDU@MCCLB0.MED.NYU.EDU>
  1287. Content-transfer-encoding: 7BIT
  1288. Newsgroups: fa.think-c
  1289. Lines: 22
  1290. Date: 22 Mar 93 11:03:44 GMT
  1291. X-Envelope-to: think-c@ics.uci.edu
  1292.  
  1293. >> If you want to get rid of the block, call DisposeHandle(myHandle) and then
  1294. >> you'll basically have
  1295. >>
  1296. >>      ------------------       ----------------------------
  1297. >>      |myHandle        |------>| undefined master pointer |
  1298. >>      ------------------       ----------------------------
  1299. >
  1300.  
  1301. Just for the record, after calling DisposeHandle, the master pointer
  1302. belongs to the memory manager.  Precisely what is in there does vary with
  1303. different versions of system software, and you should not depend on it.  In
  1304. at least some versions, disposed master pointers are linked onto a list.
  1305. In any case, storing a zero into the master pointer after calling
  1306. disposehandle is a bad thing to do which would typically cause loss of many
  1307. available master pointers.  Never store into the master pointer.  Never use
  1308. fake handles.
  1309.  
  1310. --
  1311. Edward J. Huff   huff@mcclb0.med.nyu.edu   (212)998-8465
  1312. Keck Laboratory for Biomolecular Imaging
  1313. NYU Chemistry Deptartment, 31 Washington Place, New York NY 10003
  1314.  
  1315. 
  1316. 
  1317. Path: ucivax!gateway
  1318. From: jimlynch@netcom.com (Jim Lynch)
  1319. Subject: RE:  Initializing a handle.(Q)
  1320. Message-ID: <9303221423.AA15872@netcom2.netcom.com>
  1321. Newsgroups: fa.think-c
  1322. Lines: 19
  1323. Date: 22 Mar 93 14:23:36 GMT
  1324.  
  1325. >>>>>
  1326. >> If you want to get rid of the block, call DisposeHandle(myHandle) and then
  1327. >> you'll basically have
  1328. >>
  1329. >>      ------------------       ----------------------------
  1330. >>      |myHandle        |------>| undefined master pointer |
  1331. >>      ------------------       ----------------------------
  1332. >
  1333.  
  1334. Just for the record, after calling DisposeHandle, the master pointer
  1335. belongs to the memory manager.  Precisely what is in there does vary with
  1336. different versions of system software, and you should not depend on it.
  1337. <<<<<
  1338.  
  1339. Exactly right, however at that point, you _can_ depend on myHandle pointing
  1340. to a disposed master pointer no matter what system software is there. This
  1341. is usually bad. That was the point of my statement that you should then set
  1342. myHandle to NULL so it no longer points to a dead master pointer whatever is
  1343. in there.
  1344. 
  1345. 
  1346. Path: ucivax!gateway
  1347. From: ingles@engin.umich.edu (Ray Ingles)
  1348. Subject: Float-to-String Function?
  1349. Message-ID: <5ee8bba1d.0033718@syndicoot.engin.umich.edu>
  1350. Newsgroups: fa.think-c
  1351. Lines: 18
  1352. Date: 24 Mar 93 04:35:13 GMT
  1353.  
  1354.  
  1355.  Boy, I hope I'm not doing something stupid. I'm a new C programmer. I'm
  1356. doing a class project where I have to build on another person's code. The
  1357. stuff was written in C++ to be compatible with Think C.
  1358.  The problem? He used a string to store some critical numerical values
  1359. (for a reason to long to go into). I need to put a float in there. There
  1360. are quite a few string-to-x functions, but not one x-to-string that I can
  1361. find. I can think of a truly kludgy way to do it, and I will if I have to,
  1362. but I figure someone out there must have an idea or two...
  1363.  Thanks!
  1364.  
  1365. Sincerely,
  1366.  
  1367.  Ray Ingles               ingles@engin.umich.edu
  1368.  
  1369.  "Anybody who has ever seen a photograph showing the kind of damage that
  1370. a trout traveling that fast can inflict on the human skull knows that
  1371. such photographs are very valuable. I paid $20 for mine." - Dave Barry
  1372. 
  1373. 
  1374. Path: ucivax!gateway
  1375. From: ingles@engin.umich.edu (Ray Ingles)
  1376. Subject: Okay, I'll RTFM.
  1377. Message-ID: <5ee94c7de.0038cc3@catnip.engin.umich.edu>
  1378. Newsgroups: fa.think-c
  1379. Lines: 11
  1380. Date: 24 Mar 93 07:15:59 GMT
  1381.  
  1382.  
  1383.  I *knew* I was doing somthing really stupid. You needn't bother telling
  1384. me. I'm wrinkled into a ball of contrition. The exact ANSI defintion of
  1385. sprintf is embossed on the inside of my skull in Times-Roman font.
  1386.  
  1387.  *Very* Sincerely,
  1388.  
  1389.  Ray "mindless whelp" Ingles       ingles@engin.umich.edu
  1390.  
  1391.  "...until his lone functioning brain cell quieted down and went back to
  1392. sleep." - Dave Barry
  1393. 
  1394. 
  1395. Path: ucivax!gateway
  1396. From: BEASON@uno.cc.geneseo.edu (Bob Beason)
  1397. Subject: RE: Float-to-String Functions
  1398. Message-ID: <01GW6H8XKDJ8000B0P@geneseo.bitnet>
  1399. Newsgroups: fa.think-c
  1400. X-VMS-To: IN%"think-c@ics.uci.edu"
  1401. Lines: 7
  1402. Date: 24 Mar 93 13:16:11 GMT
  1403.  
  1404. There are several string-to-x and x-to-string functions in SANE.  I don't
  1405. have a manual handy to give you specifics, though.  Depending on your
  1406. use of the string, you could use NumToString() which converts a LONGINT to
  1407. a Str255.
  1408.  
  1409. Bob Beason
  1410. beason@geneseo.bitnet
  1411. 
  1412. 
  1413. Path: ucivax!gateway
  1414. From: ingles@engin.umich.edu (Ray Ingles)
  1415. Subject: RE: Float-to-String Functions
  1416. Message-ID: <5eeb1cf4d.003b97e@agar.engin.umich.edu>
  1417. Newsgroups: fa.think-c
  1418. Lines: 8
  1419. Date: 24 Mar 93 15:55:25 GMT
  1420.  
  1421.  Cool. Thanks for the help, it looks like I could do it with sprintf. But I'll
  1422. look at SANE, too; it sounds like I need to. :->
  1423.  
  1424.  Thanks again,
  1425.  
  1426.  Raymond Ingles                       ingles@engin.umich.edu
  1427.  
  1428.  "An apple every eight hours keeps three doctors away." - B. Kliban
  1429. 
  1430. 
  1431. Path: ucivax!gateway
  1432. From: swf5601@tamsun.tamu.edu ("Stephen W. French")
  1433. Subject: Please unsubscribe me
  1434. Message-ID: <9303250601.AA22171@tamsun.tamu.edu>
  1435. X-Mailer: ELM [version 2.3 PL11]
  1436. Newsgroups: fa.think-c
  1437. Lines: 3
  1438. Date: 25 Mar 93 06:02:02 GMT
  1439.  
  1440. Please unsubscribe me from the mailing list.
  1441.  
  1442. Steve French
  1443. 
  1444. 
  1445. Path: ucivax!gateway
  1446. From: Wachs#m#_J#d#.NY_Support_#l#L-Z#r#@jpmorgan.com ("Wachs, J.")
  1447. Subject: RE: Please unsubscribe me
  1448. Message-ID: <9303251405.AA20239@tcpg01a.ny.jpmorgan.com>
  1449. Newsgroups: fa.think-c
  1450. Lines: 10
  1451. Date: 25 Mar 93 14:05:58 GMT
  1452.  
  1453. mail to request-think-c@ics.uci.edu
  1454. _______________________________________________________________________________
  1455. From: Stephen W. French on Thu, Mar 25, 1993 1:56 AM
  1456. Subject: Please unsubscribe me
  1457. To: think-c@ics.uci.edu
  1458.  
  1459. Please unsubscribe me from the mailing list.
  1460.  
  1461. Steve French
  1462.  
  1463. 
  1464. 
  1465. Path: ucivax!gateway
  1466. From: CCPABLO@mizzou1.missouri.edu (Paul Bohnenkamp)
  1467. Subject: (none)
  1468. Message-ID: <9303250757.aa19103@q2.ics.uci.edu>
  1469. Newsgroups: fa.think-c
  1470. Organization: University of Missouri-Columbia Campus Computing, 314-882-2000
  1471. Lines: 1
  1472. Date: 25 Mar 93 15:57:48 GMT
  1473.  
  1474. Please subscribe Paul Bohnenkamp
  1475. 
  1476. 
  1477. Path: ucivax!gateway
  1478. From: CCPABLO@mizzou1.missouri.edu (Paul Bohnenkamp)
  1479. Subject: Movies.h
  1480. Message-ID: <9303250801.aa19562@q2.ics.uci.edu>
  1481. Newsgroups: fa.think-c
  1482. Organization: University of Missouri-Columbia Campus Computing, 314-882-2000
  1483. Lines: 4
  1484. Date: 25 Mar 93 16:02:01 GMT
  1485.  
  1486. Anyone know where I can find Movies.h?  Archie finds Simpleinmovies.hqx
  1487. which isn't what I need.
  1488.  
  1489. -thanks in advance
  1490. 
  1491. 
  1492. Path: ucivax!gateway
  1493. From: nagel@kithrup.irvine.ca.us ("Mark D. Nagel")
  1494. Subject: Re: Please unsubscribe me
  1495. Message-ID: <0E010598.te6ebc@kithrup.Irvine.CA.US>
  1496. X-Mailer: uAccess - Macintosh Release: 1.6v1
  1497. Newsgroups: fa.think-c
  1498. Reply-To: "Mark D. Nagel" <nagel@kithrup.irvine.ca.us>
  1499. Lines: 13
  1500. Date: 25 Mar 93 16:22:25 GMT
  1501.  
  1502.  
  1503. Reply to letter <9303251405.AA20239@tcpg01a.ny.jpmorgan.com> from "Wachs, J." <Wachs#m#_J#d#.NY_Support_#l#L-Z#r#@jpmorgan.com>:
  1504.  
  1505. > Subject: RE: Please unsubscribe me
  1506. >
  1507. > mail to request-think-c@ics.uci.edu
  1508.  
  1509. Actually, that should be think-c-request@ics.uci.edu.  Please
  1510. try not to send unsubscribe requests (or any other
  1511. administrative notes) to the entire list if you can help it,
  1512. folks!
  1513.  
  1514. Mark
  1515. 
  1516. 
  1517. Path: ucivax!gateway
  1518. From: jbcondat@attmail.com
  1519. Subject: Chaos Digest, #1.12
  1520. Message-ID: <9303252355.aa27825@q2.ics.uci.edu>
  1521. Content-Type: text
  1522. Newsgroups: fa.think-c
  1523. Lines: 757
  1524. Date: 26 Mar 93 07:55:25 GMT
  1525.  
  1526. Chaos Digest               Lundi 1 Mars 1993          Volume 1 : Numero 12
  1527.  
  1528.        Editeur: Jean-Bernard Condat (jbcondat@attmail.com)
  1529.        Archiviste: Yves-Marie Crabbe
  1530.        Co-Redacteurs: Arnaud Bigare, Stephane Briere
  1531.  
  1532. TABLE DES MATIERES, #1.12 (1 Mars 1993)
  1533. File 1--Re: Des adolescents anglais transformes en hackers
  1534. File 2--Piratage sur le reseau Janet
  1535. File 3--Hackers en Coree du Sud
  1536. File 4--Guide d'Utilisation d'un Outil de Securite PC (manuel)
  1537.  
  1538. Chaos Digest is a weekly electronic journal/newsletter. Subscriptions are
  1539. available at no cost from jbcondat@attmail.com. The editors may be
  1540. contacted by voice (+33 1 47874083), fax (+33 1 47877070) or S-mail at:
  1541. Jean-Bernard Condat, Chaos Computer Club France [CCCF], 47 rue des Rosiers,
  1542. 93400 St-Ouen, France
  1543.  
  1544. Issues of Chaos-D can also be found on some French BBS. Back issues of
  1545. ChaosD can be found on the Internet as part of the Computer underground
  1546. Digest archives.  They're accessible using anonymous FTP from:
  1547.  
  1548.         * ftp.eff.org (192.88.144.4) in /pub/cud
  1549.         * red.css.itd.umich.edu (141.211.182.91) in /cud
  1550.         * halcyon.com (192.135.191.2) in /pub/mirror/cud
  1551.         * ftp.ee.mu.oz.au (128.250.77.2) in /pub/text/CuD
  1552.         * nic.funet.fi (128.214.6.100) in /pub/doc/cud
  1553.  
  1554. CHAOS DIGEST is an open forum dedicated to sharing French information among
  1555. computerists and to the presentation and debate of diverse views. ChaosD
  1556. material may be reprinted for non-profit as long as the source is cited.
  1557. Some authors do copyright their material, and they should be contacted for
  1558. reprint permission.  Readers are encouraged to submit reasoned articles in
  1559. French, English or German languages relating to computer culture and
  1560. telecommunications.  Articles are preferred to short responses.  Please
  1561. avoid quoting previous posts unless absolutely necessary.
  1562.  
  1563. DISCLAIMER: The views represented herein do not necessarily represent
  1564.             the views of the moderators. Chaos Digest contributors
  1565.             assume all responsibility for ensuring that articles
  1566.             submitted do not violate copyright protections.
  1567.  
  1568. ----------------------------------------------------------------------
  1569.  
  1570. Date: Tue Feb 23 20:06:14 CST 1993
  1571. From: jp-sorlat@altern.com (jp-sorlat )
  1572. Subject: File 1--Re: Des adolescents anglais transformes en hackers
  1573.  
  1574.  
  1575. NEWS RELEASE
  1576. Press Officer: Martin Herrema: 071 911 5101
  1577.  
  1578. February 24, 1993
  1579. Statement on Hacking at PCL
  1580.  
  1581.  
  1582. The Polytechnic of Central London (now the University of Westminster) was
  1583. affected by a 'hacker' on April 23, 1990.  The 'hacker' gained access to
  1584. the polytechnic's computer teaching systems via the academic joint computer
  1585. network JANET, which serves all British universities.
  1586.  
  1587. The 'hacker' made some changes to the system, mainly to the on-screen
  1588. start-up messages.  These were spotted very quickly on the morning of April
  1589. 23 by staff, who then changeg the public access messages back to the
  1590. correct wording.  The University of London Computer Centre, which provides
  1591. network support for JANET, was informed of the situation.
  1592.  
  1593. The teaching systems contained a variety of information concerned with
  1594. course administration and delivery, but there was no evidence thet the
  1595. hacker achieved anything other than a change of message.  The systems were
  1596. turned completely to normal within a few days, and the incident caused
  1597. minimal disruption to the work of the polytechnic.  Since the incident
  1598. further security measures have been built into the University's computer
  1599. systems.
  1600.  
  1601. ------------------------------
  1602.  
  1603. Date: Wed Feb 24 13:19:23  1993
  1604. From: S15810@PRIME-A.PLYMOUTH.AC.UK (Stuart Wyatt )
  1605. Subject: File 2--Piratage sur le reseau Janet
  1606.  
  1607.  
  1608.                      ENGLISH HACKER PROSECUTED
  1609.                      +++++++++++++++++++++++++
  1610.  
  1611. Unlike America and most other countries, England does not have too much to
  1612. show for arresting hackers and bringing them to justice. This means that
  1613. each time a hacker is caught, it makes headline news and creates the same
  1614. foreboding atmosphere that hacking reports created in the early 1980's.
  1615. The latest story is of a young hacker, Paul Bedworth.
  1616.  
  1617. Bedworth started hacking at the age of 17, and through the many computers
  1618. he accessed, he teamed up with 2 other hackers 10 years his senior. From
  1619. his bedroom, using his #200 computer he dialed into pad-ports at
  1620. Universities and from there, penetrated Internet. By spending hours at a
  1621. time hacking, he amassed huge telephone bills (one was 34 pages long). Due
  1622. to the BT bills, his parents banned him from using their telephone. This
  1623. however did not stop his antics - He soldered a link from the BT socket
  1624. and ran the wire under the carpet into his bedroom.
  1625.  
  1626. By using Janet (The Joint Academic Network) he hacked into many University
  1627. computers with the main intent to delete sensitive files and crash the
  1628. system. His idea of hacking was to disrupt as many computer systems as
  1629. possible. Other computers he attacked were the Financial Times network,
  1630. Lloyds bank, and a whole host of computers spanning France, Germany and
  1631. Luxenbourg.
  1632.  
  1633. He got around the problem of running up huge telephone bills by accessing
  1634. the billing computer, and transfering large segments of the bill to
  1635. innocent users at Manchester University.
  1636.  
  1637. Bedworth was arrested after another University put a trace on his calls.
  1638. He was charged with three dishonesty charges, which he pleaded not guilty
  1639. in court. The case is continuing at the moment (24 Feb 1993) and I will
  1640. forward any news as and when I get it.
  1641.  
  1642. In the U.K., there is a law which prohibits hacking, and hackers can be
  1643. charged with gaining unlawful access to a machine and if any data is
  1644. altered or destroyed, then that is also a criminal offence. It seems
  1645. strange that Bedworth was not charged with gaining unlawful access and
  1646. the destruction of data - But then, unlike the rumours that circulate the
  1647. world, the British judicial system is not all its cracked up to be.
  1648.                                                             ________
  1649. -Stuart Wyatt                                              (        )____
  1650.                                                           (  Alas, life  )
  1651. P.S. I am currently collating information on hacking and(   is but an   )
  1652.      hackers for a forthcoming book. If anyone wishes   (    Aardvaark.. )
  1653.      to contact me IN THE STRICTEST OF CONFIDENCE then   (       __      )
  1654.      feel free to email me.                           .   (_____)  (____)
  1655. * * * * * * * * * * * * * * * *                     . ? .       ()
  1656. * CHEERS_ THEN - _     _      *                       __      ()
  1657. *   ___/_/______|_|___| |__   *                     /    \  ()
  1658. *  |________   _______| |__|  *                    |_    _|
  1659. *    / /    | | | |   | |     *                   |(0)||(0)|
  1660. *   / /___  | | | |   | |     *                  /|_  \/  _|\
  1661. *  /___  /  | | | |   | |     *                  || | == | ||
  1662. *     / /   | | \  \__/ /     *                  || \____/ ||
  1663. *    / /    |_|   \____/      *                 ///\  !!  /\\\
  1664. *-*-/_/-*-*-*-*-*-*-*-*-*-*-*-*-=-=-=-=-=-=-=-=-!!!-!-=-=-!-!!!-=-=-=-=-=-=
  1665. From : Stuart Wyatt (Student, HNDCS1)
  1666.        Faculty of Technology,         *> Be excellent to everyone - dude <*
  1667.        University of Plymouth,
  1668.        Drake Circus,                Email: S15810@uk.ac.plym.pa     (PRIME)
  1669.        Plymouth, England.                  stuartw@uk.ac.plym.cd.zeus (SUN)
  1670. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  1671.  
  1672. ------------------------------
  1673.  
  1674. Date: 20 Feb 93 06:17:14 GMT
  1675. From: kafka@desert.hacktic.nl (Kafka )
  1676. Subject: File 3--Hackers en Coree du Sud
  1677. Repost from: alt.security
  1678.  
  1679. +++++
  1680. COMPUTER HACKER HELD FOR FORING PAPERS
  1681.  
  1682. Seoul, Feb. 18 (AFP) - South Korean prosecuters
  1683. have arrested a computer hacker on charges of
  1684. falsifying presidential Blue House documents to
  1685. demand classified data from a dozen financial
  1686. institutions, authorities said today. Prosecuters
  1687. arrested Kim Jae-yol, 23 late yesterday in the
  1688. first such hacker case here on multiple charges of
  1689. forgery of official documents and attempted fraud.
  1690. Kim, an unemployed, self-taught computer wizzard,
  1691. allegedly falsified the Blue House's secret
  1692. computer password and presidential facsimiles to
  1693. demand classified computer information from 12
  1694. financial institutions, includang several
  1695. commercial banks.
  1696. +++++
  1697.  
  1698. Mmmm, I wonder how you 'falsify (....) a password'.
  1699.  
  1700.     (P)
  1701.  
  1702. ==== Kafka ======= kafka@desert.hacktic.nl ===== 1st class l00zur =========
  1703. "The Techno Rebels are, whether we recognize it or not, agents of the Third
  1704.       Wave. They will not vanish but multiply in the years ahead."
  1705.                   - The Third Wave, Alvan Toffler
  1706.  
  1707. ------------------------------
  1708.  
  1709. Date: Mon Feb  8 08:51:00 CST 1993
  1710. From: Cerasela Tanasescu
  1711. Subject: File 4--Guide d'Utilisation d'un Outil de Securite PC (manuel)
  1712. Copyright: DCSIS SA, 1993
  1713.  
  1714.  
  1715.                                KHEOPS
  1716.                      The confidentiality of your PC
  1717.  
  1718.                         USER GUIDE--Version 2.1
  1719.  
  1720.  
  1721.             S.A. DCSIS, Avenue de Cambridge, Technopole CITIS
  1722.                   14200 HEROUVILLE SAINT CLAIR, FRANCE
  1723.               Phone: (33) 31.06.00.06, Fax :(33) 31.43.79.95
  1724.  
  1725.  
  1726. WARNING
  1727.  
  1728. The DCSIS Company may not be held responsible for the damage that may be
  1729. caused directly or indirectly by this software.
  1730.  
  1731.  
  1732. PRECAUTION
  1733.  
  1734. Any manual installation or uninstallation together with any illegal copy of
  1735. KHEOPS may damage the data on your hard disk.
  1736.  
  1737. We strongly recommend performing a backup of your data before installing
  1738. KHEOPS. This backup should be renewed frequently as a prevention against
  1739. fraudulent intrusion attempts which might affect the right functionning of
  1740. KHEOPS.
  1741.  
  1742. If this was the case, DCSIS could not be held responsible for any damage.
  1743.  
  1744.  
  1745.  
  1746. 1. PRESENTATION OF KHEOPS
  1747.  
  1748. Nowadays, all micro-computers contain sensitive data: client files,
  1749. production figures, programs, payrolls etc... Besides, all this data and
  1750. knowhow are stored on computers that more and more people know how to use,
  1751. whether they are entitled or not. The risk of information leak and file
  1752. copy is growing.  Companies must therefore protect themselves.
  1753.  
  1754. DCSIS has developped KHEOPS with this in mind.  This is an access control
  1755. software for all PC/AT micro-computers running MS/DOS(Versions 3.2x and
  1756. 5.0).  This program ensures the safety of the PC whether mono or multi
  1757. users, connected to a network  or not, so that maximum confidentiality is
  1758. guaranteed.
  1759.  
  1760. Main Functions
  1761.  
  1762. - computer access control;
  1763. - computer locking up when the user gets away from his PC;
  1764. - boot control with a diskette.
  1765.  
  1766. Besides, with the diskette administrator program:
  1767.  
  1768. - users management (up to 31 + administrator)
  1769. - logbook consultation
  1770. - computer unlocking
  1771. - program customization
  1772.  
  1773.  
  1774. 2. MAIN FUNCTIONS
  1775.  
  1776. The security ensured by KHEOPS is strictly software, i.e. there is no need
  1777. of any hardware device.
  1778.  
  1779. 2.1. Access control
  1780.  
  1781. Computer security conventions specify two terms: user identifier and
  1782. password.  Every user is given: (1) a user identifier, hereafter user id,
  1783. which may be structured around the notion of user group, (2) a password.
  1784. This pair user id/password must be unique and known only to the user.  The
  1785. password must obviously never be written or communicated to anyone.
  1786.  
  1787. Procedure
  1788.  
  1789. Access control is carried out by the only program that can run when the hard
  1790. disk is locked up.  This program prompts the user to type his user id. and
  1791. password. Once this is done, the pair user id/password is looked up by
  1792. KHEOPS in a user list stored on the disk. This list is coded and is unknown
  1793. to the operating system.
  1794.  
  1795. If this control is successful and the password is recognized as valid
  1796. (validity date), then the hard disk is made available and the user can make
  1797. full use of his PC.
  1798.  
  1799. On the other hand, if the authentification fails, the user is invited to
  1800. start again.  After 'n' unsuccessful attempts, keyboard and hard disk are
  1801. locked up: hard disk reboot is impossible. Diskette boot will not give
  1802. access to hard disk.  Only the administrator can put things in order again
  1803. thanks to his KHEOPS diskette.
  1804.  
  1805. Hard disk locking will also occur if a user tries to log in with an outdated
  1806. password.
  1807.  
  1808. The user list can hold up to 32 entries, that is an administrator plus 31
  1809. users.  This makes it possible to share a PC between several users, every
  1810. one of them being answerable for his session.
  1811.  
  1812.  
  1813. 2.2. Hard disk locking
  1814.  
  1815. When the disk is locked up, it is apparently empty.  The only response to
  1816. the DIR command is: "NO FILE FOUND".  The disk and all its partitions
  1817. (virtual disks D:\, U:\, V:\...) are also locked up.  It is impossible to
  1818. copy or delete files, to create directories of to execute programs.  Last
  1819. but not least, neither NORTON nor PCTOOLS are able to retrieve the files.
  1820.  
  1821.  
  1822. 2.3. Resident program
  1823.  
  1824. When the PC remains unused for a certain period of time, a small resident
  1825. program is activated after a given period of time.  This program locks up
  1826. screen and keyboard, and displays the standard login window.  The only
  1827. action that remains possible is to enter user id. and password.  The
  1828. resident program is activated due to a temporization or upon user request,
  1829. e.g. by pressing right SHIFT/left SHIFT.
  1830.  
  1831.  
  1832. 3. SECURITY MANAGEMENT
  1833.  
  1834. 3.1. User Identifier and Password
  1835.  
  1836. Both user id. and password must be 7 characters long.  But contrary to the
  1837. user id. which is permanent, the password must be renewed regularly.
  1838.  
  1839. Let us explain the procedure: when anyone runs the access control for the
  1840. first time, he is invited to enter his password twice (to make sure the
  1841. spelling is correct).
  1842.  
  1843. This password has a three months validity.  During the last 15 days of
  1844. validity the user will be prompted to change his password.  A message will
  1845. display the deadline and explain that this change is compulsory.  The user
  1846. is free to take no notice of this warning but once the deadline is reached
  1847. the computer disk will be locked up and only the security administrator
  1848. will have power to straighten things up.
  1849.  
  1850. If the user decides to change his password, again KHEOPS will invite him
  1851. to type it twice.  The new password will only be accepted if it is found to
  1852. be different from the user's last 6 passwords.
  1853.  
  1854. The procedure explained above is only valid for "standard users".  There
  1855. are two exceptions:
  1856.  
  1857. - the administrator for whom there is no password time restriction;
  1858.  
  1859. - temporary users.  The validity deadline is decided upon by the
  1860. administrator.  These password are not renewable.  This option allows
  1861. people to work on the PC on a temporary basis.
  1862.  
  1863.  
  1864. 3.2. Logbook
  1865.  
  1866. Like in the case of the user id/password list, the logbook is coded.  Only
  1867. the administrator is entitled to consult it.  This book is updated at the
  1868. time of access control.
  1869.  
  1870. The following information is available:
  1871.  
  1872. - successful connexions (and number of attempts);
  1873. - disconnexions and duration of session;
  1874. - PC lock up following 'n' unsuccessful password presentations;
  1875. - PC lock up due to outdated password presentation.
  1876.  
  1877. Every entry in the logbook also includes date, time and user id.  In the
  1878. case of a system locked up due to 'n' unsuccessful attempts, only the last
  1879. user id. is kept.
  1880.  
  1881. The logbook contains up to 127 entries.  Once the file is full, new entries
  1882. replace the oldest records.
  1883.  
  1884.  
  1885. 4. KHEOPS IMPLEMENTATION (Administrator)
  1886.  
  1887. 4.1. Installation
  1888.  
  1889. KHEOPS installation imperatively requires a floppy disk drive.  Use a KHEOPS
  1890. diskette with the adequat format (3.5' or 5.25').
  1891.  
  1892. - Insert the KHEOPS diskette into drive a;
  1893. - Boot the PC again (on a:).
  1894.  
  1895. The following pull-down menu will then be displayed on the screen:
  1896.  
  1897.                  |        MAIN MENU          |
  1898.                  | - Install KHEOPS          |
  1899.                  | - Modify present system   |
  1900.                  | - Uninstall KHEOPS        |
  1901.  
  1902. On every screen the following warning is displayed for information:
  1903.  
  1904.                  | On all menu               |
  1905.                  | ESC:  quit                |
  1906.                  |    :  preceding item      |
  1907.                  |    :  next                |
  1908.                  |    :  item(un)select      |
  1909.  
  1910. - Validate every option by pressing the ENTER key;
  1911.  
  1912. - Choose option "INSTALL KHEOPS".  The program will display the following
  1913. message:
  1914.  
  1915.               "Installation under way. Please wait".
  1916.  
  1917. - Another window will pop up:
  1918.  
  1919.                  |  Administrator characteristics  |
  1920.                  |       User identifier :         |
  1921.                  |       Password        :         |
  1922.  
  1923. - Enter administrator user id. and password (7 characters).  Both must be
  1924. validated by pressing ENTER key.  They will be required on every use of
  1925. the KHEOPS diskette;
  1926.  
  1927. - Confirm the password.
  1928.  
  1929. Installation will then proceed.  Wait for the message:
  1930.  
  1931.                        "KHEOPS is installed"
  1932.  
  1933. Program customization is now necessary.
  1934.  
  1935.                |            SYSTEM CUSTOMIZATION            |
  1936.                | Resident program activation delay (mn) : 5 |
  1937.                | Background tasks authorized            : 0 |
  1938.                | Debugging authorized                   : 0 |
  1939.                | New hot-key                            : N |
  1940.                | Screen backup drive                    : C |
  1941.                | Number of attempts before lock up      : 3 |
  1942.                | Windows utilization                    : N |
  1943.  
  1944. The administrator can now "add a user".
  1945.  
  1946. - Press "ENTER" to type a user id, or
  1947. - Press "ESC" if the user list is complete.
  1948.  
  1949. The first user that is created in the list is the administrator.
  1950.  
  1951. In order to put an end to KHEOPS installation :
  1952.  
  1953. - Press "ESC" key on Main Menu;
  1954. - Remove the KHEOPS diskette (KHEOPS will prompt you to do so);
  1955.  
  1956. PC will reboot automatically.  On PC reboot, the screen will display the
  1957. standard login screen.  Two situations may now occur:
  1958.  
  1959. Case #1: The administrator attempts to log in. He can type his id. and
  1960. password,
  1961.  
  1962. Case #2: A new user logs in.  The program then displays the following
  1963. message:
  1964.  
  1965.                         "Enter new password"
  1966.  
  1967. The password must be 7-characters long.  This password must be checked as
  1968. typing errors are easily made.  This is why the user is prompted to type
  1969. his password once again.
  1970.  
  1971. If the two secret codes are identical, access to the PC is authorized.
  1972.  
  1973.                    "KHEOPS installation is complete"
  1974.  
  1975.  
  1976. 4.2. System Modification
  1977.  
  1978. - Insert KHEOPS diskette into drive a:.
  1979. - Type the following, then press "ENTER":
  1980.  
  1981.                               "A:KHEOPS"
  1982.  
  1983. A window invites the administrator to type his id. and password.
  1984.  
  1985.                  |   Administrator characteristics   |
  1986.                  | User identifier :                 |
  1987.                  | Password        :                 |
  1988.  
  1989. Following which the main pull-down menu is displayed on the screen:
  1990.  
  1991.                  |             MAIN MENU             |
  1992.                  | - Install KHEOPS                  |
  1993.                  | - Modify current system           |
  1994.                  | - Uninstall KHEOPS                |
  1995.  
  1996. Upon selection of "Modify current system" another pull-down menu is
  1997. displayed:
  1998.  
  1999.                  |        SYSTEM MODIFICATION        |
  2000.                  |  Work on the list                 |
  2001.                  |  Unlock hard disk                 |
  2002.                  |  Logbook consultation             |
  2003.                  |  System customization             |
  2004.  
  2005. Work on the list
  2006. ++++++++++++++++
  2007.  
  2008.                  |         WORK ON THE LIST          |
  2009.                  |  Cancel a user                    |
  2010.                  |  Add a user                       |
  2011.                  |  Add a temporary user             |
  2012.                  |  Unlock a user                    |
  2013.                  |  User list consultation           |
  2014.  
  2015. "Add a user"
  2016.  
  2017. This option is used to allow a new user to use the micro-computer.  The
  2018. administrator is invited to type the user's name:
  2019.  
  2020.                  |        User characteristics       |
  2021.                  |   Name : Doherty                  |
  2022.  
  2023. This name is the user id. and must imperatively be 7-characters long.
  2024.  
  2025. "Cancel a user"
  2026.  
  2027. This option is used to disable a user.  The administrator is invited to
  2028. type the user's name:
  2029.  
  2030.                  |           User Removal            |
  2031.                  |   Name :                          |
  2032.  
  2033. Once the administrator has pressed ENTER, the user no longer stands in the
  2034. list.
  2035.  
  2036. "Add a temporary user"
  2037.  
  2038. This option makes it possible to add a user to those who have access to the
  2039. PC on a temporary basis.
  2040.  
  2041.                  |          Temporary user           |
  2042.                  |   Name :                          |
  2043.  
  2044. - Type his user id. and press "ENTER".
  2045.  
  2046.  
  2047. The program will then invite the administrator to type the user's time limit
  2048. of access to the PC.
  2049.  
  2050.                  |         TEMPORARY ACCESS          |
  2051.                  |         Validity deadline :       |
  2052.                  |  Year     : 91                    |
  2053.                  |  Month    : 07                    |
  2054.                  |  Day      : 15                    |
  2055.                  |                                   |
  2056.                  |  Confirmation (Y/N) : o           |
  2057.  
  2058. - Type two digits for year, month and day, then validate your data by
  2059. pressing "Y"es of "N"o.
  2060.  
  2061. "Unlock a user"
  2062.  
  2063. When a password is outdated (3 months validity period), the PC is
  2064. temporarily locked up.  Only the administrator can unlock it thanks to
  2065. this option.
  2066.  
  2067. "Display user list"
  2068.  
  2069. This option is used to display the list of all users entitled to use the PC.
  2070.  
  2071. Unlock Hard Disk
  2072. ++++++++++++++++
  2073.  
  2074. After 'n' unsuccessful login attempts the hard disk is locked up.  Only the
  2075. administrator has the possibility to unlock it thanks to this function.
  2076.  
  2077. Logbook Consultation
  2078. ++++++++++++++++++++
  2079.  
  2080. A cyclic logbook containing the last 127 entries is displayed with the
  2081. following data:
  2082.  
  2083.      - user id.;
  2084.      - date and time;
  2085.      - action: login, logout, PC locking;
  2086.      - description: number of login attempts, duration of connexion, number
  2087.        of unsuccessful attempts.
  2088.  
  2089. This option makes it possible for the administrator to check who uses the
  2090. micro-computer and for how long.
  2091.  
  2092.  
  2093. System Customization
  2094. ++++++++++++++++++++
  2095.  
  2096. Thanks to this option the administrator can adapt KHEOPS to users need.
  2097.  
  2098.               |            SYSTEM CUSTOMIZATION            |
  2099.               | Resident program activation delay (mn): 5  |
  2100.               | Background tasks authorized           : o  |
  2101.               | Debugging authorized                  : o  |
  2102.               | New hot-key                           : o  |
  2103.               | Screen backup drive                   : c  |
  2104.               | Number of attempts before lock up     : 3  |
  2105.               | Windows utilization                   : n  |
  2106.  
  2107. * "Resident program activation delay"
  2108.   The administrator should type the temporization that is desirable before
  2109.   the login screen is displayed when the PC remains unused.
  2110.  
  2111. * "Background task authorization"
  2112.   We strongly recommend using this option in case of intensive use of the
  2113.   hard disk (e.g. compilation, printing).  Keyboard will be locked up, but
  2114.   background tasks will carry on their job. In case your reply is No,
  2115.   keyboard, screen and hard disk will be subject to access control.
  2116.   Remark: "Background tasks" must be authorized in the case of a network
  2117.   server.
  2118.  
  2119. * "Debugging authorized"
  2120.   The administrator indicates whether or not the use of a debugging tool is
  2121.   authorized.
  2122.   Remark: Debugging should be authorized in case the PC shows uncontrollable
  2123.   reboot problems.
  2124.  
  2125. * "New hot-key"
  2126.   The hot-key activates the resident program at any time.  The default hot-
  2127.   key value is "left shift/right shift".  Nevertheless the administrator is
  2128.   free to change the hot-key value.
  2129.  
  2130. * "Screen storage disk"
  2131.   This option enables screen backup on a hard or virtual disk (200 KB are
  2132.   necessary).  The default disk drive is c:.
  2133.  
  2134. * "Number of attempts before system lock-up"
  2135.   This function makes it possible to customize the number of user id/
  2136.   password presentation attempts before hard disk lock-up.
  2137.  
  2138. REMARK: Any modification of one of these options will only be taken into
  2139. account once reboot has been performed.
  2140.  
  2141. 4.3. Uninstalling
  2142.  
  2143. - Insert KHEOPS diskette into drive a:;
  2144. - Type: "A:KHEOPS";
  2145.  
  2146. The following window pops up:
  2147.  
  2148.                  |     Administrator characteristics     |
  2149.                  |  User identifier :                    |
  2150.                  |  Password :                           |
  2151.  
  2152. Once the administrator id. and password have been validated and checked
  2153. KHEOPS displays the main menu.
  2154.  
  2155.                  |               MAIN MENU               |
  2156.                  |  - Install KHEOPS                     |
  2157.                  |  - Modify present system              |
  2158.                  |  - Uninstall KHEOPS                   |
  2159.  
  2160. - Choose "Uninstall";
  2161.  
  2162. After a few seconds the following message is displayed on the screen:
  2163.  
  2164.                         "The system must be reset"
  2165.  
  2166. - Take the KHEOPS diskette out of the drive as the PC will reboot
  2167. automatically.
  2168.  
  2169.                     "KHEOPS has been totally uninstalled"
  2170.  
  2171. 4.4. Hard Disk Unlocking
  2172.  
  2173. After 'n' unsuccessful user id/password presentations, the following
  2174. message is displayed on the screen:
  2175.  
  2176.                  | Hard disk and keyboard are locked up. |
  2177.                  |    Please phone the administrator.    |
  2178.  
  2179. The PC will be unable to boot on hard disk.  Any attempt to do so will
  2180. result in the screen to display the following message:
  2181.  
  2182.                            "Non system disk".
  2183.  
  2184. - Insert KHEOPS diskette into drive a:;
  2185. - Reset the PC so that it boots on the diskette;
  2186. - Type adminitrator id. and password.
  2187.  
  2188. The following message is then displayed:
  2189.  
  2190.                         "The system must be reset"
  2191.  
  2192. - Leave the diskette in drive a: and reboot.  Then, when prompted to, type
  2193. administrator id. and password.
  2194.  
  2195.                            The PC is unlocked.
  2196.  
  2197.  
  2198. 5.  KHEOPS IMPLEMENTATION (Users)
  2199.  
  2200. Now that KHEOPS has been installed, your data on the PC's hard disk is
  2201. protected.
  2202.  
  2203. 5.1. PC Reset
  2204.  
  2205. At boot time, the user is invited to type his id. and password.  Having
  2206. done that, he has free access to the resources of the PC.
  2207.  
  2208. 5.2. Resident Program Activation
  2209.  
  2210. The function of the resident program is to lock up screen, if background
  2211. tasks are not authorized, and keyboard either due to temporization or upon
  2212. user request:
  2213.  
  2214. - Temporization: in case the PC has remained unused for 'n' minutes (as
  2215. set up by the administrator in the customization session, screen (if
  2216. background tasks are not authorized) and keyboard action is automatically
  2217. suspended.
  2218.  
  2219. KHEOPS displays the standard login window and invites the user to type his
  2220. id. and password.  If the same user logs in again, his application is
  2221. restaured.  In case another user attempts to connect himself then the PC
  2222. reboots.
  2223.  
  2224. - User request: the resident program can be deliberately activated by the
  2225. user by pressing the hot-key.
  2226.  
  2227. KHEOPS then displays the following message:
  2228.  
  2229.                       "End of session (Y/N) ?"
  2230.  
  2231. * By pressing the letter "Y" the user will ensure that the PC is
  2232.   automatically rebooted if another user logs in;
  2233.  
  2234. * The user answers "N".  This means that he wants to suspend his job
  2235.   temporarily.  KHEOPS displays the following message:
  2236.  
  2237.                          "Computer in use"
  2238.  
  2239. The only id/password acceptable are those of the user who pressed the hot-
  2240. key.  Any other user will be rejected.
  2241.  
  2242.  
  2243. 6.  KHEOPS COMPATIBILITY
  2244.  
  2245. 6.1.  Hardware
  2246.  
  2247. KHEOPS can be installed on IBM PC/AT, PS/2 or compatible micro-computers
  2248. running MS/DOS version 3.2 to 5.0.  DCSIS has tested this program on the
  2249. following computers: IBM PC/AT & PS/2, COMPAQ DeskPro (286S and 386S) and
  2250. LTE 286, SLT 286 and 386, EPSON EL2 and EL3S, GOUPIL G5 286, HP VECTRA 486,
  2251. OLIVETTI PC 310
  2252.  
  2253. 6.2.  Software
  2254.  
  2255. 6.2.1. Standard software
  2256.  
  2257. KHEOPS has been tested and validated by DCSIS with the following programs:
  2258. MICROSOFT C, TURBO C, TURBO PASCAL, PCTOOLS, NORTON, DBASE, LOTUS 1.2.3...
  2259.  
  2260. 6.2.2. Graphic software
  2261.  
  2262. KHEOPS can handle mouse and keyboard, which ensures compatibility with the
  2263. following programs: WORD 4 and 5, WINDOWS 2 and 3, PAINTBRUSH, PAGE MAKER
  2264.  
  2265. 6.2.3. Antivirus software
  2266.  
  2267. KHEOPS is compatible with VIRUSAFE+, trademark registered by Eliashim
  2268. Microcomputers, which has been recognized as one of the best antivirus
  2269. programs on the market (VIRUSAFE+ can handle 1400 virus and is wellknown
  2270. for its preventive and curative vocation).  The joint use of KHEOPS and
  2271. VIRUSAFE+ ensures maximum micro-computer safety.  Install Virusafe+ first
  2272. then KHEOPS (this is imperative).
  2273.  
  2274. 6.2.4. Network
  2275.  
  2276. It is possible to install KHEOPS on every workstation of a local area
  2277. network (e.g. NOVELL network) so that every station is protected locally.
  2278.  
  2279. ------------------------------
  2280.  
  2281. End of Chaos Digest #1.12
  2282. ************************************
  2283. 
  2284. 
  2285. Path: ucivax!gateway
  2286. From: NLEONARD@rcnvms.rcn.mass.edu
  2287. Subject: using the sound manager to activate a touch tone phone
  2288. Message-ID: <01GW9FMUV00OD2PWE2@RCNVMS.RCN.MASS.EDU>
  2289. Content-transfer-encoding: 7BIT
  2290. MIME-version: 1.0
  2291. Newsgroups: fa.think-c
  2292. X-VMS-To: IN%"think-c@ics.uci.edu"
  2293. Lines: 13
  2294. Date: 26 Mar 93 16:04:50 GMT
  2295.  
  2296.  
  2297. Does anyone have a sample program that uses the waveTableSynth to
  2298. play more than 1 sine or square wave at a time.  We are interested
  2299. in using the  Mac speaker to control a home made touch tone phone
  2300. circuit.
  2301.  
  2302. Thank you,
  2303.  
  2304. Neil Leonard
  2305. nleonard@ecn.mass.edu
  2306.  
  2307. Computer Arts
  2308. Massachusetts College of Art
  2309. 
  2310. 
  2311. Path: ucivax!gateway
  2312. From: NLEONARD@rcnvms.rcn.mass.edu
  2313. Subject: artists looking for help w/ sound
  2314. Message-ID: <01GW9GDLVUMED2PWMC@RCNVMS.RCN.MASS.EDU>
  2315. Content-transfer-encoding: 7BIT
  2316. MIME-version: 1.0
  2317. Newsgroups: fa.think-c
  2318. X-VMS-To: IN%"think-c@ics.uci.edu"
  2319. Lines: 14
  2320. Date: 26 Mar 93 16:27:13 GMT
  2321.  
  2322.  
  2323. We are looking to do device control using the mac speaker.  A pitch-to-
  2324. ttl converter can be made from $12 in parts.  The circuit decodes the
  2325. 2 note diads (chords) that a touch tone phone generates.
  2326.  
  2327. We are looking for a simple example that demonstrates the use of
  2328. the mac speaker to play more than one note at a time.
  2329.  
  2330. Neil Leonard
  2331. Assist. Dir.
  2332. Computer Arts
  2333. Massachusetts College of Art
  2334.  
  2335. nleonard@ecn.mass.edu
  2336. 
  2337. 
  2338. Path: ucivax!gateway
  2339. From: idowell@bbn.com
  2340. Subject: TCL Window Question
  2341. Message-ID: <9303260841.aa21944@q2.ics.uci.edu>
  2342. Newsgroups: fa.think-c
  2343. Lines: 12
  2344. Date: 26 Mar 93 16:41:49 GMT
  2345.  
  2346. Stupid TCL Question #5479:
  2347. I have a director-owner which has a pointer to
  2348. a director.  When the user clicks the close box
  2349. of the window belonging to the director, both
  2350. the window and the director get Dispose() invoked.
  2351. How can I tell if the pointer that the director-owner
  2352. has is good?  It is not set to null by the Dispose
  2353. method.
  2354.  
  2355. Thanks,
  2356. Ian Dowell
  2357. idowell@bbn.com
  2358. 
  2359.